The Transmission Control Protocol (TCP) is a virtual circuit protocol that is one of the core protocols used in data transfer over the Internet. Using TCP, applications on networked hosts create connections to one another, over which data packets may be transferred from one application to another. The protocol guarantees reliable delivery of data from sender to receiver whilst ensuring that the data packets remain in the correct sequence. TCP also distinguishes data for multiple connections when two or more applications such as a Web server and an e-mail server, for example, are concurrently running on the same host. Consequently, TCP supports many of the Internet's most popular application protocols and thus facilitates applications, including the World Wide Web, e-mail and Secure Shell, for example.
In the Internet protocol suite, TCP is the intermediate layer between the Internet Protocol (IP) below it, and an application above it. Applications often need reliable pipe-like connections to each other, whereas the Internet Protocol does not provide such streams. TCP fulfils the task of the transport layer in the simplified OSI model of computer networks.
Applications send streams of octets (8-bit bytes) to TCP for delivery through the network, and TCP divides the byte stream into appropriately sized segments which are usually delineated by the Maximum Transmission Unit (MTU) size of the data link layer of the network that the computer running the application is attached to. TCP then passes the resulting packets to the Internet Protocol, for delivery through a network to the TCP module of the entity at the other end. TCP checks to make sure that no packets are lost by giving each packet a sequence number, which is also used to make sure that the data delivered to the entity at the far end arrives in the correct order. The TCP module at the far end sends back an acknowledgement for packets which have been successfully received; a timer at the sending TCP will cause a timeout if an acknowledgement is not received within a reasonable round-trip time (or RTT), and the (presumably lost) data will then be re-transmitted. The TCP checks that no bytes are damaged by using a checksum computed at the sender for each block of data before it is sent, and checked at the receiver.
A proxy server is a computer that offers a computer network service to allow clients to make indirect network connections to other network services. A client connects to the proxy server then requests a connection, a file, or other resource that is available on a different server. The proxy provides the resource, either by connecting to the specified server or by serving it from a cache. In some cases, the proxy may alter the client's request or the server's response for various purposes.
Transparent/Intercepting Proxies are known. With Transparent/Intercepting Proxies, communications between networked clients are intercepted and redirected to the proxy without the client-side being specially configured, and often without the client side being aware that a communication is redirected in this manner. Transparent proxies ideally intercept sessions between clients and servers, effectively splitting each client-server session into two sessions: a first session between the client and the transparent proxy and a second session between the transparent proxy and the server.
The intercepting proxy typically intercepts the TCP SYN (synchronization) message that is sent from the client node to a server node. The intercepting proxy then establishes a (virtual) socket to enable it to communicate with the client node. This socket relays a TCP SYN/ACK (synchronization acknowledgement) message to the client node.
At the same time the intercepting proxy establishes a connection to the server node by opening a separate socket that initiates the TCP triple handshake with the server node. All outgoing messages from the intercepting proxy then use the network parameters established in the original session, including the same IP addresses and the same TCP/UDP port numbers.
The traditional Transparent/Intercepting Proxy described above has several disadvantages however. For example, it will be appreciated that a Transparent/Intercepting proxy can only rely on layer 4 parameters, such as IP addresses and TCP port numbers, in order to determine whether or not to intercept a session. This leads to unnecessary session interception, heavy system loading and inefficiencies in system resource usage. For example, a system that is required to intercept a particular protocol using dynamic TCP ports has to intercept the sessions of all passing protocols in order to operate correctly. Likewise, a system that is required to intervene only when certain data such as a message or command is transferred during a session has to intercept all sessions of the given protocol in order to intervene when such an event occurs. This superfluous interception is clearly inefficient.
There is thus a need for an alternative to traditional proxy server technology and the present invention addresses this need.